/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package DAO;

import ClassesUnicas.Pessoa;
import java.util.ArrayList;

/**
 * DAOPessoa
 *
 * Versao 1.0
 *
 * Data Criação 30/02/2014
 *
 * @author Igor
 */
public interface DAOPessoa {
     /**
     * Retorna um SQL de busca, com campos padroes
     * @param slqInterno
     * @return 
     */
    public String sqlPesquisaPadrao(String slqInterno, String idFase, String sqlOrderBy);
    
    /**
     * Grava os dados do objeto pessoa passado no parametro
     * @param pessoa 
     * @return Valor do codigo interno gerado automaticamente
     * @throws java.lang.Exception
     */
    public String gravaPessoa(Pessoa pessoa) throws Exception;
    
    /**
     * Busca todas pessoas cadastradas no Banco de Dados
     * @return 
     * @throws java.lang.Exception 
     */
    public ArrayList<Pessoa> buscaPessoas(String idPessoa, String nome, String idFase, String orderBy) throws Exception;

    /**
     * Busca a pessoa com ID igual ao passado como parametro
     * @param idPessoa
     * @return 
     * @throws java.lang.Exception 
     */
    public Pessoa buscaPessoa(long idPessoa) throws Exception;
    
    /**
     * Busca a pessoa com Nome igual ao passado como parametro
     * @param nome
     * @return 
     * @throws java.lang.Exception 
     */
    public Pessoa buscaPessoa(String nome) throws Exception;
    
    /**
     * Seleciona a maior pontuacao do ultimo jogo do jogador
     * @param idPessoa
     * @return 
     * @throws java.lang.Exception 
     */
    public long buscaPontuacaoMaxUltimoJogo(long idPessoa, long idFase, long idSubFase) throws Exception;

    /**
     * Busca a quantidade de SubFases que a pessoa finalizou
     * @param idPessoa
     * @return
     * @throws Exception 
     */
    public int buscaQuantidadeSubFasesFinalizads(long idPessoa) throws Exception;
}
